#/bin/bash



# protoc 
PB_DIR=./rpc/pb
PB_GEN_DIR=./rpc/gen
PB_DOC_DIR=./rpc/doc
THIRD_PARTY_DIR=./rpc/pb/thirdparty
PB_MODULE_DIRS=(shared webapi mwebapi)
PB_MODULE_DIRS2=(backendapi)
PROTOC_TWIRP_OPT=paths=source_relative
PROTOC_GO_OPT=paths=source_relative
PROTOC_GO_GRPC_OPT=paths=source_relative

for MOD_NAME in ${PB_MODULE_DIRS[@]};
do
    MOD_PATH=$PB_DIR/$MOD_NAME
    MOD_OUTPUT_PATH=$PB_GEN_DIR/$MOD_NAME
    MOD_DOC_PATH=$PB_DOC_DIR/$MOD_NAME
    mkdir -p $MOD_DOC_PATH
    # echo $MOD_PATH
    # echo $MOD_OUTPUT_PATH
    for FILE in `ls $MOD_PATH | grep ".proto$"`
    do
      if [ ! -f "$FILE" ]; then
        
        FILE_PATH=$MOD_PATH/$FILE
        FILE_NAME=$(echo $FILE | sed 's/\.[^.]*$//')
        FILE_OUTPUT_PATH=$MOD_OUTPUT_PATH/$FILE_NAME
        echo $FILE_PATH
        echo $FILE_OUTPUT_PATH
        mkdir -p $FILE_OUTPUT_PATH
        protoc --proto_path=$PB_DIR --proto_path=$MOD_PATH --proto_path=$THIRD_PARTY_DIR \
          --twirp_out=$FILE_OUTPUT_PATH --twirp_opt=$PROTOC_TWIRP_OPT \
				  --go_out=$FILE_OUTPUT_PATH --go_opt=$PROTOC_GO_OPT \
				  --go-grpc_out=$FILE_OUTPUT_PATH --go-grpc_opt=$PROTOC_GO_GRPC_OPT \
          --swagger_out=$MOD_DOC_PATH \
				  $FILE
      fi
    done;
done;

for MOD_NAME in ${PB_MODULE_DIRS2[@]};
do
    MOD_PATH=$PB_DIR/$MOD_NAME
    MOD_OUTPUT_PATH=$PB_GEN_DIR/$MOD_NAME
    # echo $MOD_PATH
    # echo $MOD_OUTPUT_PATH
    for FILE in `ls $MOD_PATH | grep ".proto$"`
    do
      if [ ! -f "$FILE" ]; then
        
        FILE_PATH=$MOD_PATH/$FILE
        FILE_NAME=$(echo $FILE | sed 's/\.[^.]*$//')
        FILE_OUTPUT_PATH=$MOD_OUTPUT_PATH/$FILE_NAME
        echo $FILE_PATH
        echo $FILE_OUTPUT_PATH
        mkdir -p $FILE_OUTPUT_PATH
        protoc --proto_path=$PB_DIR --proto_path=$MOD_PATH \
				  --go_out=$FILE_OUTPUT_PATH --go_opt=$PROTOC_GO_OPT \
				  --go-grpc_out=$FILE_OUTPUT_PATH --go-grpc_opt=$PROTOC_GO_GRPC_OPT \
				  $FILE
      fi
    done;
done;

# 将生成的*.twirp.go里的导入的jsonpb路径 从“github.com/golang/protobuf/jsonpb”改为自己修改后的“bp/internal/jsonpb152”
sed -i ''  "s#github.com/golang/protobuf/jsonpb#bp/internal/jsonpb152#g" `find $PB_GEN_DIR -name '*.twirp.go'`
# 将timestamp生成的注释去掉
sed -i ''  "s^A Timestamp.*in this format.^new Date().toISOString().格式:'2021-05-11T06:41:36.087Z'^g"  \
  `find $PB_DOC_DIR -name '*.swagger.json'`

sed -i ''  "s#bp.webapi.CardDiscountOpService#卡折扣(web)#g" `find $PB_DOC_DIR -name 'card_discount.swagger.json'`
sed -i ''  "s#bp.webapi.CouponDistributionOpService#优惠券投放(web)#g" `find $PB_DOC_DIR -name 'coupon_distribution.swagger.json'`
sed -i ''  "s#bp.webapi.CouponOpService#优惠券(web)#g" `find $PB_DOC_DIR -name 'coupon.swagger.json'`
sed -i ''  "s#bp.webapi.PromotionOpService#促销活动(web)#g" `find $PB_DOC_DIR -name 'promotion.swagger.json'`
sed -i ''  "s#bp.webapi.CronOpService#cron#g" `find $PB_DOC_DIR -name 'cron.swagger.json'`

sed -i ''  "s#bp.mwebapi.CardDiscountOpService#卡折扣(mweb)#g" `find $PB_DOC_DIR -name 'mcard_discount.swagger.json'`
sed -i ''  "s#bp.mwebapi.CouponOpService#优惠券(mweb)#g" `find $PB_DOC_DIR -name 'mcoupon.swagger.json'`
sed -i ''  "s#bp.mwebapi.OfferOpService#优惠项目(mweb)#g" `find $PB_DOC_DIR -name 'offer.swagger.json'`
sed -i ''  "s#bp.mwebapi.OffTrialOpService#优惠试算项目(mweb)#g" `find $PB_DOC_DIR -name 'off_trial.swagger.json'`
sed -i ''  "s#bp.mwebapi.PromotionOpService#促销活动(mweb)#g" `find $PB_DOC_DIR -name 'mpromotion.swagger.json'`